﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;

namespace DataAccessLayer
{
    internal abstract class Database:IDisposable
    {
        #region ExecuteQuery 

        public abstract DataSet ExecuteQuery(string szQuery, string szTableName);        

        public abstract DataSet ExecuteQuery(string[] szQuery, string[] szTableName);

        public abstract DataSet ExecuteQuery(string szQuery);

        public abstract DataSet ExecuteQuery(string[] szQuery);        
        
        #endregion

        #region ExecuteScalar 

        public abstract object ExecuteScalar(string szQuery);

        #endregion

        #region ExecuteNonQuery 

        public abstract int ExecuteNonQuery(string szQuery);

        public abstract int ExecuteNonQuery(string[] szQuery);

        public abstract int ExecuteNonQuery(string[] szQuery, bool bTranasactionRequired);

        #endregion

        #region Properties 

        public abstract string ConnectionString
        {
            set;

        }

        public abstract int CommandTimeout
        {
            set;
        }

        #endregion

        #region Connection 

        public abstract ConnectionState ConnectionStatus();

        #endregion

        #region IDisposable Members

        public abstract void Dispose();
        
        #endregion
    }// end of class
}// end of namespace
